package controllcivil.bean;

import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;

/**
 * Entidade responsavel por armazenar as informacoes referente ao usuario de cada {@link Pessoa};
 * 
 * @author Rafael Altagnam
 * @version 1.0
 */
@javax.persistence.Entity
public class Usuario extends Entity {

	/**
	 * Atributo indicando a qual {@link Pessoa} que este usuario representa.
	 */
	@OneToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID_PESSOA")
	private Pessoa pessoa;

	/**
	 * Atributo indicando o login de acesso do usuario;
	 */
	private String login;

	/**
	 * Atributo indicando a senha de acesso do usuario.
	 */
	private String senha;

	
	/**
	 * Construtor padrao.
	 */
	public Usuario() {

	}

	/**
	 * Construtor que recebe como parametro o ID da entidade.
	 * @param id
	 */
	public Usuario(int id) {
		this.id = id;
	}
	
	public Pessoa getPessoa() {
		return pessoa;
	}

	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	@Override
	public String toString() {
		return "Usuario [id=" + id + ", login=" + login + "]";
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((login == null) ? 0 : login.hashCode());
		result = prime * result + ((pessoa == null) ? 0 : pessoa.hashCode());
		result = prime * result + ((senha == null) ? 0 : senha.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		Usuario other = (Usuario) obj;
		
		if (this == obj)
			return true;
		
		if (obj == null)
			return false;
		
		if (getClass() != obj.getClass())
			return false;
		
		if(other.getId() == this.id)
			return true;
		
		return false;
		
		
	}
	
	

}
